package com.fl.nj.service;

import com.fl.nj.entity.DbInfo;
import java.util.List;
import java.util.Map;

/**
 * 数据库信息Service接口
 * 定义数据库信息的业务操作
 */
public interface DbInfoService {
    /**
     * 保存数据库信息
     * @param dbInfo 数据库信息实体
     * @return 是否保存成功
     */
    boolean save(DbInfo dbInfo);
    
    /**
     * 批量保存数据库信息
     * @param dbInfoList 数据库信息列表
     * @return 影响的行数
     */
    int batchSave(List<DbInfo> dbInfoList);
    
    /**
     * 更新数据库信息
     * @param dbInfo 数据库信息实体
     * @return 是否更新成功
     */
    boolean update(DbInfo dbInfo);
    
    /**
     * 根据ID获取数据库信息
     * @param id 主键ID
     * @return 数据库信息实体
     */
    DbInfo getById(Long id);
    
    /**
     * 根据数据库配置ID获取数据库信息
     * @param dbConfigId 数据库配置ID
     * @return 数据库信息列表
     */
    List<DbInfo> getByDbConfigId(Long dbConfigId);
    
    /**
     * 根据数据库配置ID和数据库名称获取数据库信息
     * @param dbConfigId 数据库配置ID
     * @param dbName 数据库名称
     * @return 数据库信息实体
     */
    DbInfo getByDbConfigIdAndDbName(Long dbConfigId, String dbName);
    
    /**
     * 分页查询数据库信息
     * @param params 包含分页参数和查询条件的Map
     * @return 数据库信息列表
     */
    List<DbInfo> getPageList(Map<String, Object> params);
    
    /**
     * 查询数据库信息总数
     * @param params 包含查询条件的Map
     * @return 数据库信息总数
     */
    int getTotal(Map<String, Object> params);
    
    /**
     * 删除数据库信息
     * @param id 主键ID
     * @return 是否删除成功
     */
    boolean delete(Long id);
    
    /**
     * 根据数据库配置ID删除所有关联的数据库信息
     * @param dbConfigId 数据库配置ID
     * @return 影响的行数
     */
    int deleteByDbConfigId(Long dbConfigId);
    
    /**
     * 从数据库配置同步数据库列表
     * @param dbConfigId 数据库配置ID
     * @return 同步结果
     */
    Map<String, Object> syncDatabasesFromConfig(Long dbConfigId);
}